package com.wy.block_scene;

import java.util.Scanner;

/**
 * @author 美女
 * @date 2022/04/21 17:41
 **/
public class Main {
    static long fib(int n){
        if(n==0||n==1){
            return 1;
        }
        return fib(n-1)+fib(n-2);
    }
//    //没有引入线程时-如果运算过大，卡很久才能计算出，期间只能等待
//    public static void main(String[] args){
//        Scanner scanner=new Scanner(System.in);
//        while(true){
//            System.out.println("请输入一个数字");
//            int n=scanner.nextInt();
//            long r=fib(n);
//            System.out.printf("fib(%d)=%d\n",n,r);
//        }
//    }
    //引入一个线程计算，主线程只负责读取用户输入
    static class CalcFib extends Thread{
        private final int n;
    public CalcFib(int n) {
        this.n = n;
    }
    @Override
    public void run() {
        //把计算过程放在线程中计算
        long r=fib(n);
        System.out.printf("fib(%d)=%d\n",n,r);
    }
}
    public static void main(String[] args){
        Scanner scanner=new Scanner(System.in);
        while(true){
            System.out.println("请输入一个数字");
            int n=scanner.nextInt();
            //读取输入后创建一个线程去计算
            Thread t=new CalcFib(n);
            t.start();
            //主线程直接读取下一个输入就好了。达到了在一个执行流阻塞时也可以进行新的执行流
        }
    }
}
